#ifndef PICCOLO_VK_QUEUE_H
#define PICCOLO_VK_QUEUE_H

#include "PiccoloVKCommon.h"

namespace Piccolo
{
    class PiccoloVKQueue
    {
    public:
        PiccoloVKQueue(uint32_t familyIndex, uint32_t index, VkQueue queue, bool bPresent);
        ~PiccoloVKQueue() = default;

        void Submit(const std::vector<VkCommandBuffer>& commandBuffers, const std::vector<VkSemaphore>& waitSemaphores = {}, const std::vector<VkSemaphore>& signalSemaphores = {}, VkFence frameFence = VK_NULL_HANDLE);
        void WaitIdle() const;

        VkQueue GetQueue() const { return mQueue; }

    private:
        uint32_t mFamilyIndex;
        uint32_t mIndex;
        VkQueue mQueue;
        bool mPresent;
    };
}

#endif